// 1903 [模拟/例子]手机九宫格输入法
// https://oj.rnd.huawei.com/problems/1903/details 手机上的九宫格输入法使用 0-9
// 十个数字键，除了可以在“数字状态”下输入数字外，
// 还可以在英文状态下通过连续多次摁某一数字键来输入对应的英文字符。
// 每个数字键可输入的字符对应关系如图：
// 输入法初始默认为“数字状态”，并可在“数字状态”与“英文状态”间切换。
// 输入法在“数字状态”下，数字键对应为单个数字，摁几次显示几个该数字。
// 输入法在“英文状态”下，如果数字键为
// 0，则对应为单字符（空格），摁几次显示几个该字符。
// 输入法在“英文状态”下，如果数字键为非
// 0，则对应为多个字符，可通过连续多次快速摁该键循环选择对应字符：
// 以英文状态下的数字键 2 为例，摁1次为 a ，2次为 b ，3次为 c ，4次又循环回 a 。
// 若连续多次摁键循环选择时被其它键或停顿中断，则输出所选择的字符。
// 现给定一个仅含字符集合为 [0-9#/]
// 的字符串，表示用户的摁键操作，请输出实际显示出来的字符串。 0-9 为数字键。 #
// 表示在“数字状态”与“英文状态”之间切换。 / 停顿符，表示用户有意停顿。

#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>
using namespace std;

class Solution {
 public:
  map<char, string> Getletter = {
      {'0', " "},   {'1', ",."},  {'2', "abc"},  {'3', "def"}, {'4', "ghi"},
      {'5', "jkl"}, {'6', "mno"}, {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"}};
  const string GetResult(const string &input) {
    // printf("res=%s.%d\n", input.c_str(), input.size());
    string output;
    bool bEnMode = false;                     //模式选择
    int touch_time = 0;                       //输入次数
    for (int i = 0; i < input.size(); i++) {  //每次for循环仅处理本次所指字符
      if (input[i] == '#') {                  //模式切换
        bEnMode = !bEnMode;
      } else if (input[i] == '/') {  //直接跳过
        continue;
      } else {
        if (bEnMode == false) {  //数字模式直接输出
          output.push_back(input[i]);
        } else {  //否则
          if (input[i] ==
              '0') {  // 0单独判断输出空格，否则会导致连续多次空格只输出一次
            output.push_back(Getletter[input[i]][0]);
            continue;
          }
          touch_time++;
          if (i == input.size() - 1 ||
              input[i + 1] !=
                  input
                      [i]) {  //如果到达字符末尾或下一字符同本次字符不同则终止本次字符统计，输出对应字符
            int mod = 3;      //根据对应字符取余数，默认为3
            if (input[i] == '1') {  //字符1余数为2
              mod = 2;
            } else if (input[i] == '7' || input[i] == '9') {  //字符7或9余数为4
              mod = 4;
            }
            output.push_back(Getletter[input[i]][(touch_time - 1) %
                                                 mod]);  //取出对应字符并输出
            touch_time = 0;                              //输入次数归零
          }
        }
      }
    }
    return output;
  }
};

int main() {
  string input = "#22/23044444411";
  getline(cin, input);
  Solution solu;
  cout << solu.GetResult(input) << endl;
  return 0;
}
